package br.com.playonline.util.bolao;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import br.com.playonline.domain.Ganho;
import br.com.playonline.domain.Jogo;
import br.com.playonline.domain.Resultado;
import br.com.playonline.dto.ResultadoBolaoDTO;
import br.com.playonline.dto.ResultadoDTO;

public class ResultadoQuina extends GeradorResultado {

	@Override
	public List<Resultado> gerar(List<Jogo> jogos, ResultadoBolaoDTO resultadoBolaoDTO) {
		List<Resultado> resultados = new ArrayList<Resultado>();
		List<String> sequenciaSorteada = Arrays.asList(resultadoBolaoDTO.getSeqSorteada().split(" "));
		String[] sequenciaJogada;
		Integer numerosDeAcerto = 0;
		List<ResultadoDTO> resultadoDTOs = resultadoBolaoDTO.getResultadoDTOs();
		ResultadoDTO resultadoTerno = resultadoDTOs.get(2);
		ResultadoDTO resultadoQuadra = resultadoDTOs.get(1);
		ResultadoDTO resultadoQuina = resultadoDTOs.get(0);
		for (Jogo jogo : jogos) {
			sequenciaJogada = jogo.getSequencia().split("-");
			for (String value : sequenciaJogada) {
				if (sequenciaSorteada.contains(value)) {
					numerosDeAcerto++;
				}
			}
			if (numerosDeAcerto >= 3) {
				Resultado resultado = new Resultado();
				List<Ganho> ganhos = new ArrayList<Ganho>();
				if (numerosDeAcerto == 3) {
					Ganho ganho = new Ganho();
					ganho.setTipoDeGanho("terno");
					ganho.setValorDoGanho(resultadoTerno.getValorDoGanho());
					ganho.setQntDeGanhadores(resultadoTerno.getQntDeGanhadores());
					ganhos.add(ganho);
				}
				if (numerosDeAcerto == 4) {
					Ganho ganhoQuina = new Ganho();
					ganhoQuina.setTipoDeGanho("quadra");
					ganhoQuina.setValorDoGanho(resultadoQuadra.getValorDoGanho());
					ganhoQuina.setQntDeGanhadores(resultadoQuadra.getQntDeGanhadores());
					ganhos.add(ganhoQuina);
				}
				//TODO Se ganhador acertar sena, ele ganha a sena, ganha a quina se jogo maior que 6 e ganha todas a quadra em jogos maior que 7.
				if (numerosDeAcerto == 5) {
					Ganho ganhoSena = new Ganho();
					ganhoSena.setTipoDeGanho("quina");
					ganhoSena.setValorDoGanho(resultadoQuina.getValorDoGanho());
					ganhoSena.setQntDeGanhadores(resultadoQuina.getQntDeGanhadores());
					ganhos.add(ganhoSena);
				}
				resultado.setGanhos(ganhos);
				resultado.setSeqJogoPremiado(jogo.getSequencia());
				resultados.add(resultado);
			}
			numerosDeAcerto = 0;
		}
		return resultados;
	}
}
